Creative Sound Blaster 16 PnP: - The maximum sample rate is 45454Hz. This maximum is enforced whether you use DSP 1.x/2.x/3.x or Sound Blaster 16 DSP playback commands. - The minimum sample rate seems to vary, depending on which command set you use to play audio. Sound Blaster 1.x/2.x/3.x DSP playback: 3906Hz Sound Blaster 16 DSP playback: 4800Hz - Sound Blaster 16 DSP playback appears to have a minor bug where you can use a sample rate as low as 4800Hz, but if you specify a rate below 4800Hz it clamps the rate to 4982Hz. unsigned int sb16dsp_play_rate(unsigned int desired) { if (desired > 45454) return 45454; else if (desired >= 4800) return desired; else return 4982; } - The command set would have you think the card can support a wide range of sample rates from minimum to maximum. Actual hardware appears to round the sample rate to the nearest multiple of some unknown constant. This rounding affects both DSP 1.x/2.x/3.x and Sound Blaster 16 DSP commands. Quick analysis seems to suggest that the sample rate is subtracted by an unknown base and rounded down to a multiple of 177. The change between each "step" is about 177. - Direct DAC maximum playback rate depends on the card: Sound Blaster 16 AWE 64: 34076Hz Sound Blaster 16 ViBRA16C PnP: 22325Hz - Non-PnP versions of the SB16 appear to have bugs in the sample rate commands: - Sound Blaster 1.x/2.x/3.x discontinuity at time constant 0xC8. Sample rate should be 17857Hz but the DSP doubles the sample rate to 35561Hz for some reason. - Sound Blaster 16 commands to set the sample rate appear to have odd discontinuities at some points. - An hour-long test of all 65536 sample rates is in 'Creative Sound Blaster 16 non-PnP SB16 sample rate test.txt' which shows not only that sample rates are quantized but that there are periodic ranges where the sample rate it chooses is wrong compared to input. Creative Sound Blaster Live! SB16 emulation: - Emulation is quite good. - The sample rate range is continuous, not rounded. See 'Creative Sound Blaster Live (EMU10K1) SB16 emulation.txt'. - Minimum sample rate: - Sound Blaster 1.x/2.x/3.x time constant: 3906Hz - Sound Blaster 16 sample rate: 2.5Hz - Maximum sample rate: - Sound Blaster 1.x/2.x/3.x time constant: 166666Hz - Sound Blaster 16 sample rate: 65535Hz - Sample rates that lay way outside the normal range of rates seem to produce odd outliers or 0Hz, perhaps due to the emulation driver and division overflow. - Asking the emulated SB16 to play high-speed DMA beyond 166666Hz causes the emulated DSP to stop responding. This is possibly a bug in the emulation driver. - Emulation driver accepts Direct DAC commands but silently discards them. It does however emulate Direct DAC at the correct speed to emulate the maximum 23000Hz allowed by that method. - The emulation driver accepts all time constant values. It does not limit the time constant by whether you use non-highspeed or highspeed DSP playback. Reveal SC-400: - The maximum sample rate depends on the command set used: - Direct DAC: 23000Hz - Sound Blaster 1.x/2.x non-highspeed: 23000Hz - Sound Blaster 2.x/3.x highspeed: 44100Hz - Sound Blaster 16: 44000Hz - The minimum sample rate depends on the command set used: - Sound Blaster 1.x/2.x/3.x: 3800Hz - Sound Blaster 16: 5300Hz - The sample rate in Sound Blaster 1.x/2.x/3.x command set is rounded down a bit. Some time constants are handled at the same rate as the next one, except every so often. - Sound Blaster 16 sample rate handling is EXTREMELY quanitized. The rate you set is rounded to one of the following: 5300Hz 6400Hz 10800Hz 18700Hz 22000Hz 33000Hz 37600Hz 44000Hz - There are some odd discontinuities regarding SB 1.x/2.x/3.x commands. - Non-highspeed commands map sample rates from 3800Hz to 23000Hz as expected, but for some reason it then jumps to 25500Hz, then jumps to 23000Hz. - Highspeed commands map sample rates from 3800Hz to 37000Hz, but then the rate jumps to 44100Hz afterwards. - ESS688/ESS1868 - Direct DAC playback is limited to: - Compaq ESS1887 110349Hz - Sample rates by Sound Blaster commands is continuous, no rounding. - The chipset supports all Sound Blaster sample rates regardless of normal or highspeed commands. It does not limit the time constant if you do not use highspeed DSP commands. - Minimum sample rates: - Sound Blaster DSP: 3906Hz - ESS688 rate divider: 3107Hz - Maximum sample rates: - Sound Blaster DSP: 43478Hz - ESS688 rate divider: 397750Hz However: Even though the ESS688 CAN be driven at high sample rates, it is limited by the ISA bus. Testing shows that when playback is combined with wait states on the ISA bus (such as continuous IDE controller reads) a more realistic maximum is 48KHz 16-bit stereo. - The ESS688 rate divider causes an effective sample rate of zero Hz if set to 0x7F or 0xFF, which isn't mentioned in the datasheet. If you set the sample rate divider to either of those values, the ESS688 will not cycle any samples and playback will be silent. If you attempt DMA playback at rate 0x7F or 0xFF, the ESS688 appears to fill it's FIFO (DMA 256 bytes) and then stop without playing any audio. For sanity purposes, we'll list the sample rate of these special cases as 0Hz. - The ESS688 lowpass filter causes complete silence if set to 0x7F or 0xFF. - Found while testing TS_PS.EXE on real hardware: If you set up the chipset to use demand DMA fetching (2 or 4 bytes), and you use non-auto-init DMA, the ESS chip will fetch only in those blocks of data you specified before acting on DMA and IRQ functions. So if you specify demand DMA of 4 bytes, and the DMA controller is set up for a transfer that is NOT a multiple of 4 bytes, the ESS688 will play the buffer but stop short up to 3 bytes from the end because it will be waiting to fill 4 bytes when the DMA controller cannot provide it. It will not fire the IRQ either. - Pro Audio Spectrum 16 - Sound Blaster emulation is quite good - Reports DSP 2.0 - Minimum sample rate: 3906Hz - Maximum sample rate: 22222Hz - Beyond 22222Hz, sample rate behavior is quite odd. After 22222Hz the card apparently muffles the audio and then the sample rate decreases back down to zero, with some erratic rates at the very tail end.